package com.anjlab.ping.filters;
import static com.google.appengine.api.datastore.KeyFactory.stringToKey;
import javax.persistence.EntityTransaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.anjlab.ping.entities.Job;
import com.anjlab.ping.services.Utils;
import com.google.appengine.api.datastore.Key;
public class RunJobFilter extends AbstractFilter {
private static final Logger logger = LoggerFactory.getLogger(RunJobFilter.class);
public static final String JOB_KEY_PARAMETER_NAME = "job";
@Override
protected void processRequest(EntityTransaction tx) throws Exception {
String encodedJobKey = globals.getHTTPServletRequest().getParameter(RunJobFilter.JOB_KEY_PARAMETER_NAME);
if (Utils.isNullOrEmpty(encodedJobKey)) {
return;
}
Key key = stringToKey(encodedJobKey);
logger.debug("Running job: {}", key);
Job job = jobDAO.find(key);
if (job == null) {
return;
}
if (job.isSuspended()) {
logger.debug("{} suspended", job);
return;
}
application.runJob(job);
application.updateJob(job, false, true);
}
}